package incomeSetting

import (
	"fmt"
	"github.com/gofiber/fiber/v2"
	"sg-backend/global"
	"sg-backend/model/paylog"
)

type _addType struct {
	Name string `json:"name"`
	Icon string `json:"icon"`
}

func AddIncomeType(ctx *fiber.Ctx) error {
	// 解释数据
	// 数据传入为{id:自己, name:自己1}
	var dataDto _addType
	if err := ctx.BodyParser(&dataDto); err != nil {
		return ctx.JSON(fiber.Map{
			"status":  "error",
			"message": fmt.Sprintf("数据解释出错！%s", err),
		})
	}

	// 成功提取数据
	// 验证是否有重复
	var updateObj paylog.IncomeType
	err := global.DB.Where("name = ? AND user_id = ?", dataDto.Name, global.AuthUser.UserId).Find(&updateObj)
	if err.Error != nil {
		return ctx.JSON(fiber.Map{
			"status":  "error",
			"message": fmt.Sprintf("获取数据库出错！%s", err.Error),
		})
	}

	if err.RowsAffected > 0 {
		return ctx.JSON(fiber.Map{
			"status":  "error",
			"message": "收入类型不允许重复添加！",
		})
	}

	// 保存到数据库
	newType := paylog.IncomeType{
		Name:   dataDto.Name,
		Icon:   dataDto.Icon,
		UserId: global.AuthUser.UserId,
	}

	cr := global.DB.Create(&newType)
	if cr.Error != nil {
		return ctx.JSON(fiber.Map{
			"status":  "error",
			"message": "保存类型到数据库失败！%s" + cr.Error.Error(),
		})
	}

	// 返回
	return ctx.JSON(fiber.Map{
		"status":  "done",
		"message": "添加成功！",
	})
}
